package grupobbva.pe.operhc.webservice.rest.model;

import static grupobbva.pe.operhc.util.Constant.ACUERDOS;
import static grupobbva.pe.operhc.util.Constant.CIEN;
import static grupobbva.pe.operhc.util.Constant.DIEZ_MILLON;
import static grupobbva.pe.operhc.util.Constant.GARANTIA_PERSONAL;
import static grupobbva.pe.operhc.util.Constant.GARANTIA_REAL;
import static grupobbva.pe.operhc.util.Constant.LINEA_CREDITO;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

import org.apache.commons.lang.StringUtils;

public class Producto implements Serializable{
	private static final long serialVersionUID = -4732324091497034660L;
	private String codProductoHdn;
	private String codProducto;
	private String desProducto;
	private String nivelaOferta;
	private String multCont;
	private String contrata;
	private String simula;
	private String desNivelaOferta;
	private String desMultCont;
	private String familia;
	
	private BigDecimal tasa;
	private Integer plazo;
	private BigDecimal cuota;
	private BigDecimal nuevaCuota;
	
	private String indicadorExcluido;
	
	private List<ProductoPlazo> listProdPlazo;
	
	//ini MCG 20141209
	private String contratoOriginal;
	private String lineaCredito;
	private String lineaEfectivoPlus;
	private String importeConcebidoOriginal;
	private String saldoPendientePago;	
	//fin MCG 20141209
	
	//ccc
	private String editTasa;
	private String editPlazo;
	//ccc
			
	
	public String getCodProducto() {
		return codProducto;
	}
	public String getEditTasa() {
		return editTasa;
	}
	public void setEditTasa(String editTasa) {
		this.editTasa = editTasa;
	}
	public String getEditPlazo() {
		return editPlazo;
	}
	public void setEditPlazo(String editPlazo) {
		this.editPlazo = editPlazo;
	}
	public void setCodProducto(String codProducto) {
		this.codProducto = codProducto;
	}
	public String getDesProducto() {
		return desProducto;
	}
	public void setDesProducto(String desProducto) {
		this.desProducto = desProducto;
	}
	public String getNivelaOferta() {
		return nivelaOferta;
	}
	public void setNivelaOferta(String nivelaOferta) {
		this.nivelaOferta = nivelaOferta;
	}
	public String getMultCont() {
		return multCont;
	}
	public void setMultCont(String multCont) {
		this.multCont = multCont;
	}
	public String getDesNivelaOferta() {
		return desNivelaOferta;
	}
	public void setDesNivelaOferta(String desNivelaOferta) {
		this.desNivelaOferta = desNivelaOferta;
	}
	public String getDesMultCont() {
		return desMultCont;
	}
	public void setDesMultCont(String desMultCont) {
		this.desMultCont = desMultCont;
	}
	public String getCodProductoHdn() {
		return codProductoHdn;
	}
	public void setCodProductoHdn(String codProductoHdn) {
		this.codProductoHdn = codProductoHdn;
	}
	public String getFamilia() {
		return familia;
	}
	public void setFamilia(String familia) {
		this.familia = familia;
	}
	public List<ProductoPlazo> getListProdPlazo() {
		return listProdPlazo;
	}
	public void setListProdPlazo(List<ProductoPlazo> listProdPlazo) {
		this.listProdPlazo = listProdPlazo;
	}
	public String getContrata() {
		return contrata;
	}
	public void setContrata(String contrata) {
		this.contrata = contrata;
	}
	public String getSimula() {
		return simula;
	}
	public void setSimula(String simula) {
		this.simula = simula;
	}
	public BigDecimal getTasa() {
		return tasa;
	}
	public void setTasa(BigDecimal tasa) {
		this.tasa = tasa;
	}
	public Integer getPlazo() {
		return plazo;
	}
	public void setPlazo(Integer plazo) {
		this.plazo = plazo;
	}
	public BigDecimal getCuota() {
		return cuota;
	}
	public void setCuota(BigDecimal cuota) {
		this.cuota = cuota;
	}
	public BigDecimal getNuevaCuota() {
		return nuevaCuota;
	}
	public void setNuevaCuota(BigDecimal nuevaCuota) {
		this.nuevaCuota = nuevaCuota;
	}
	public String getIndicadorExcluido() {
		return indicadorExcluido;
	}
	public void setIndicadorExcluido(String indicadorExcluido) {
		this.indicadorExcluido = indicadorExcluido;
	}
	
	
	
	public String getContratoOriginal() {
		return contratoOriginal;
	}
	public void setContratoOriginal(String contratoOriginal) {
		this.contratoOriginal = contratoOriginal;
	}
	public String getLineaCredito() {
		return lineaCredito;
	}
	public void setLineaCredito(String lineaCredito) {
		this.lineaCredito = lineaCredito;
	}
	public String getLineaEfectivoPlus() {
		return lineaEfectivoPlus;
	}
	public void setLineaEfectivoPlus(String lineaEfectivoPlus) {
		this.lineaEfectivoPlus = lineaEfectivoPlus;
	}
	public String getImporteConcebidoOriginal() {
		return importeConcebidoOriginal;
	}
	public void setImporteConcebidoOriginal(String importeConcebidoOriginal) {
		this.importeConcebidoOriginal = importeConcebidoOriginal;
	}
	public String getSaldoPendientePago() {
		return saldoPendientePago;
	}
	public void setSaldoPendientePago(String saldoPendientePago) {
		this.saldoPendientePago = saldoPendientePago;
	}
	public Producto asignarInformacion(String productoInfo, String codigoProducto) {
		String strTasa = StringUtils.substring(productoInfo, 0, 10);
		String strPlazo = StringUtils.substring(productoInfo, 10, 14);
		String strCuota = StringUtils.substring(productoInfo, 14, 29);
		indicadorExcluido = StringUtils.substring(productoInfo, 29, 30);


		String strcontratoOriginal = "";
		String strlineaCredito = "";
		String strlineaEfectivoPlus = "";
		String strimporteConcebidoOriginal ="";
		String strsaldoPendientePago = "";
		String newproductoInfo = StringUtils.substring(productoInfo, 30, 78);
		if (newproductoInfo.length()>0){
			//verificar si son los codigos de los productos nuevos GR GP AC LC
			if (codigoProducto.equals(GARANTIA_REAL) ||codigoProducto.equals(GARANTIA_PERSONAL)||codigoProducto.equals(ACUERDOS)){			
				strcontratoOriginal = StringUtils.substring(productoInfo, 30, 50);
				strlineaCredito = StringUtils.substring(productoInfo, 50, 64);
				strlineaEfectivoPlus = StringUtils.substring(productoInfo, 64,78);
				
			}else if (codigoProducto.equals(LINEA_CREDITO)){
				strcontratoOriginal = StringUtils.substring(productoInfo, 30, 50);
				strimporteConcebidoOriginal = StringUtils.substring(productoInfo, 50, 64);
				strsaldoPendientePago = StringUtils.substring(productoInfo, 64, 78);
			}
			
			contratoOriginal = strcontratoOriginal;
			try {
				
				if (strlineaCredito.trim().length()>0){
					lineaCredito = strlineaCredito.trim();
				}
				if (strlineaEfectivoPlus.trim().length()>0){
					lineaEfectivoPlus =strlineaEfectivoPlus.trim();
				}
				if (strimporteConcebidoOriginal.trim().length()>0){
					importeConcebidoOriginal =strimporteConcebidoOriginal.trim();
				}
				if (strsaldoPendientePago.trim().length()>0){
					saldoPendientePago = strsaldoPendientePago.trim();
				}			
			} catch (Exception e) {
				lineaCredito="";
				lineaEfectivoPlus="";
				importeConcebidoOriginal="";
				saldoPendientePago="";			
			}
		
		}
		
		codProducto = codigoProducto;
		tasa = new BigDecimal(strTasa).divide(DIEZ_MILLON);
		plazo = Integer.valueOf(strPlazo);
		cuota = new BigDecimal(strCuota).divide(CIEN);
		return this;
	}
	
}